/*
 * Created on 24/06/2005
 *
 */
package com.master.bd.calculo_frete;

import java.sql.*;

import com.master.ed.*;
import com.master.root.*;
import com.master.util.*;
import com.master.util.bd.*;

/**
 * @author Tiago
 *
 */
public class Calcula_Frete_Expresso extends Calcula_Frete{


    public Calcula_Frete_Expresso(ExecutaSQL executasql) {
        super(executasql);
        // // ("Calcula_Frete_Expresso 1");
    }


    public void calcula(Calcula_FreteED ed)
    throws Excecoes{


            Localiza_Tabela = new Localiza_Tabela(this.executasql);
            Tabela_FreteBean tabelaFreteED = new Tabela_FreteBean();

            ed.setLocalizado("N");
            ed.setDM_Tem_Cidade("S");
            ed.setDM_Tem_Peso("N");
            ed.setDM_Tem_Modal("N");
            ed.setDM_Tem_Validade("N");
            ed.setDM_Tem_Vigencia("N");
            ed.setDM_Tem_Empresa("N");
            ed.setDM_Tem_Regiao_Estado("S");
            ed.setDM_Tem_Estado("S");
            ed.setDM_Tem_Subregiao("N");
            ed.setDM_Tem_Regiao_Pais("N");
            ed.setDM_Tem_Pais("S");
            ed.setDM_Tabela_Reversa("N");
            ed.setDM_Tem_Tabela_Unidade("N");
            ed.setDM_Tem_Produto("S");

            ed.setDM_Percurso_Busca("Origem_Destino");


                // // ("Localiza_Tabela Calcula_Frete_Expresso ---");

                tabelaFreteED = Localiza_Tabela.escolheTabela(ed);


                if ("S".equals(tabelaFreteED.getDM_Localizado())) {
                  // // ("achou tabela- oid >> " + tabelaFreteED.getOID());

                    this.calculaFretePeso(tabelaFreteED, ed);
                    this.calculaFreteValor(tabelaFreteED, ed);

                    // // ("calculou tudo ");

                }
    }

    protected void calculaFretePeso( Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed) throws Excecoes {
            // --------------------FRETE PESO--------------------------------------------------

            // // ("achou tabela- getNR_Peso >> " + ed.getNR_Peso());

            Tipo_Movimento = "FP";
            VL_Movimento_Frete=0;


                    if (ed.getNR_Peso_Tabela() < 2) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1D() ;
                    } else if (ed.getNR_Peso_Tabela() < 3) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate2C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate2D() ;
                    } else if (ed.getNR_Peso_Tabela() < 4) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate3C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate3D() ;
                    } else if (ed.getNR_Peso_Tabela() < 5) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate4C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate4D() ;
                    } else if (ed.getNR_Peso_Tabela() < 6) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate5C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate5D() ;
                    } else if (ed.getNR_Peso_Tabela() < 7) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate6C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate6D() ;
                    } else if (ed.getNR_Peso_Tabela() < 8) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate7C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate7D() ;
                    } else if (ed.getNR_Peso_Tabela() < 9) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate8C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate8D() ;
                    } else if (ed.getNR_Peso_Tabela() < 10) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate9C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate9D() ;
                    } else if (ed.getNR_Peso_Tabela() < 11) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate10C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate10D() ;
                    } else if (ed.getNR_Peso_Tabela() < 12) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate11C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate11D() ;
                    } else if (ed.getNR_Peso_Tabela() < 13) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate12C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate12D() ;
                    } else if (ed.getNR_Peso_Tabela() < 14) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate13C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate13D() ;
                    } else if (ed.getNR_Peso_Tabela() < 15) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate14C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate14D() ;
                    } else if (ed.getNR_Peso_Tabela() < 16) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate15C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate15D() ;
                    } else if (ed.getNR_Peso_Tabela() < 17) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate16C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate16D() ;
                    } else if (ed.getNR_Peso_Tabela() < 18) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate17C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate17D() ;
                    } else if (ed.getNR_Peso_Tabela() < 19) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate18C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate18D() ;
                    } else if (ed.getNR_Peso_Tabela() < 20) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate19C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate19D() ;
                    } else if (ed.getNR_Peso_Tabela() < 21) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate20C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate20D() ;
                    } else if (ed.getNR_Peso_Tabela() < 22) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate21C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate21D() ;
                    } else if (ed.getNR_Peso_Tabela() < 23) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate22C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate22D() ;
                    } else if (ed.getNR_Peso_Tabela() < 24) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate23C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate23D() ;
                    } else if (ed.getNR_Peso_Tabela() < 25) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate24C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate24D() ;
                    } else if (ed.getNR_Peso_Tabela() < 26) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate25C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate25D() ;
                    } else if (ed.getNR_Peso_Tabela() < 27) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate26C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate26D() ;
                    } else if (ed.getNR_Peso_Tabela() < 28) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate27C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate27D() ;
                    } else if (ed.getNR_Peso_Tabela() < 29) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate28C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate28D() ;
                    } else if (ed.getNR_Peso_Tabela() < 30) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate29C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate29D() ;
                    } else if (ed.getNR_Peso_Tabela() < 31) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate30C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate30D() ;
                    } else if (ed.getNR_Peso_Tabela() < 50) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate30C()) + ((ed.getNR_Peso_Tabela() - 30) * tabelaFreteED.getVL_D_ExcedenteC());
                        } else VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate30D() ) + ((ed.getNR_Peso_Tabela() - 30) * tabelaFreteED.getVL_D_ExcedenteD());
                    } else if (ed.getNR_Peso_Tabela() < 51) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate50C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate50D() ;
                    } else if (ed.getNR_Peso_Tabela() < 100) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate50C() ) + ((ed.getNR_Peso_Tabela() - 50) * tabelaFreteED.getVL_D_Excedente2C());
                        } else VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate50D() ) + ((ed.getNR_Peso_Tabela() - 50) * tabelaFreteED.getVL_D_Excedente2D());
                    } else if (ed.getNR_Peso_Tabela() < 101) {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate100C() ;
                        } else VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate100D();
                    } else {
                        if ("C".equals(tabelaFreteED.getDM_Tipo_Localizacao_Destino())) {
                            VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate100C()) + ((ed.getNR_Peso_Tabela() - 100) * tabelaFreteED.getVL_D_Excedente3C());
                        } else VL_Movimento_Frete = (tabelaFreteED.getVL_D_Ate100D()) + ((ed.getNR_Peso_Tabela() - 100) * tabelaFreteED.getVL_D_Excedente3D());

                        }

                        ed.setCD_Tipo_Movimento(Tipo_Movimento);
                        ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
                        ed.setVL_Movimento(VL_Movimento_Frete);
                        this.incluiMovimento(ed);
    }


    protected void calculaFreteValor(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------AD VALOREM--------------------------------------------------
            Tipo_Movimento = "AV";
            VL_Movimento_Frete = (ed.getVL_Nota_Fiscal() * tabelaFreteED.getPE_D_Ad_Valorem() / 100);

            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);

    }


}
